package com.project.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.project.entity.activity.ActivityUser;


/**
 * 活动用户实体类服务接口类
 * @author chenlz
 *
 */
public interface IActivityUserService {
	/**
	 * 保存
	 * @author chen.liangzhen
	 * @time 2017年3月30日 上午11:13:45
	 * @version	v0.1.0
	 * @param activityUser
	 * @return
	 */
	public Long save(ActivityUser activityUser);
	
	/**
	 * 对参加该活动的手机号进行查重，若是已有手机号参加该活动，提示该手机号已被使用
	 * @author chen.liangzhen
	 * @time 2017年3月30日 下午2:19:08
	 * @version v0.1.0
	 * @param activityId
	 * @param mobile
	 * @return
	 */
	public int checkRepetitionApply(Long activityId, String mobile);
	
	/**
	 * 每个账号只能报名一次
	 * @author chen.liangzhen
	 * @time 2017年3月30日 下午2:19:08
	 * @version v0.1.0
	 * @param activityId
	 * @param userCode
	 * @return
	 */
	public int checkUserRepetitionApply(Long activityId, String userCode);
	
	/**
	 * 保存活动用户信息
	 * @author chen.liangzhen
	 * @time 2017年3月30日 下午3:32:47
	 * @version v0.1.0
	 * @param activityUser
	 * @return
	 */
    public int saveActivityUser(ActivityUser activityUser);
    
    /**
	 * 取消活动
	 * @author chen.liangzhen
	 * @time 2017年3月30日 下午4:23:33
	 * @version
	 * @param id
	 * @return
	 */
	public boolean activityCancel(Long userId,Long activityId, String cancelReason);
	
	/**
	 * 根据userId查询活动列表
	 * @author chen.liangzhen
	 * @time 2017年3月30日 下午4:41:52
	 * @version v0.1.0
	 * @param userId
	 * @return
	 */
    public List<ActivityUser> queryByUserId(@Param("userId")Long userId);
    
    /**
     * 根据实体类查询对应的数据集合
     * @author chen.liangzhen
     * @time 2017年4月5日 下午3:38:48
     * @version
     * @param activityUser
     * @return
     */
    public List<ActivityUser> findList(ActivityUser activityUser);
    
    /**
	 * 根据userId查询活动列表
	 * @author chen.liangzhen
	 * @time 2017年3月30日 下午4:41:52
	 * @version v0.1.0
	 * @param userId
	 * @return
	 */
    public List<ActivityUser> queryByUserIdAndStatus(@Param("userId")Long userId, @Param("auditStatus")String auditStatus, 
    		@Param("status")String status, @Param("pageNo")int pageNo, @Param("pageSize")int pageSize);
}